singularity

703. Kth largest element in a stream

O(k log n), O(log n)

/**
 * @param {number} k
 * @param {number[]} nums
 */
var KthLargest = function (k, nums) {
    this.main = new MinPriorityQueue();
    for (let i = 0; i < nums.length; i++) {
        this.main.enqueue(nums[i]);
    }
    this.k = k;
    while (this.main.size() > k) this.main.dequeue().element;
};

/** 
 * @param {number} val
 * @return {number}
 */
KthLargest.prototype.add = function (val) {
    this.main.enqueue(val);
    if (this.main.size() > this.k) this.main.dequeue().element;
    return this.main.front().element;
};

/** 
 * Your KthLargest object will be instantiated and called as such:
 * var obj = new KthLargest(k, nums)
 * var param_1 = obj.add(val)
 */